FIG. 1 shows a typical switching system 10 for managing traffic of packets of information over a network backbone. The system 10 contains one or more input ingresses I1, I2, I3, one or more output egresses E1, E2, E3, and a switch or crossbar 12. Three ingresses I1, I2, I3 and three egresses E1, E2, E3 are depicted in FIG. 1, although any number of ingresses and egresses can be connected in the switching system 10. Packets of data enter the ingresses I1, I2, I3 through traffic sources 14 and exit from the egresses E1, E2, E3, through traffic exits 16. In typical operation, the switching system 10 can connect a given ingress to a given egress through the crossbar or switch 12 such that there is a one-to-one mapping between an ingress and egress, or it can connect a given ingress to one or more egresses such that there is a one-to-many mapping between ingresses and egresses. In other words, for every timeslot for transfer of data through the switching system 10, each egress can only receive data from a single ingress. However, an ingress can send data to multiple egresses. Further, each ingress I1, I2, I3, contains a plurality of queues for storing packets of data and each egress E1, E2, E3 contains a plurality of buffer FIFOS (First-In-First-Out). For each timeslot, a single queue within each ingress can be connected to one or more ports within one or more egresses. For example, during a given timeslot, queue Q2 within ingress I1 can be connected to buffer FIFO1 within egress E3, queue Q1 within ingress I2 can be connected to buffer FIFO1 within egress E1, and queue Q1 within ingress I3 can be connected to buffer FIFO3 of egress E2.
Generally, one goal of a switching system, such as the system 10 of FIG. 1, is to maximize usage of the switch or crossbar 12 such that its valuable bandwidth (a so-called scarce resource) is used efficiently. A second goal of switching systems can be to service packets for customers depending on Quality-of-Service (QoS) guarantees. Another goal of switching systems can be to prevent certain packets from being queued in the switching system for unacceptably long periods of time prior to transmission through the system 10. A need exists for accomplishing these goals with improved methods and systems.
The size of a timeslot for data transfer across the switch or crossbar 12 in the switching system 10 of FIG. 1 generally determines the amount of data that can be sent in a single timeslot. Two methods are commonly used to select the size of a timeslot for data transfer in currently implemented switching systems, such as the system 10 of FIG. 1, where packet sizes vary considerably. The first method is to use a timeslot size that is sufficiently large so that most packets of information in the queues can be transmitted through the switch or crossbar 12 during a given timeslot. A problem with such a method, however, is low utilization of the system 10. Portions of each timeslot will likely not be filled, and hence the available bandwidth, which is generally costly, will not be used.
The second method used to select timeslot size is to use a timeslot size that is smaller than that used in the first method. Then, however, packets that are larger than the timeslot must be broken into more than one segment so that each segment will fit through the switching system 10 in a single timeslot. This second method may reduce the low utilization problem associated with the first method discussed above; however, it requires that the packets be broken (segmented) into multiple segments at an ingress I1, I2, I3 and then rebuilt (reassembled) at an egress E1, E2, E3. Such segmentation and reassembly can constrain the performance of the switching system 10.
A need exists for a method and system for allocating bandwidth over a link that properly allocates the bandwidth to maximize utilization of bandwidth, ensure QoS guarantees, and prevent packets from being queued indefinitely in a switching system while, at the same time, ensuring that the method and system operate in a “fair” manner. Finally, a need exists for a method and system for maximizing utilization of a timeslot for data transfer without causing a segmentation and reassembly problem.